﻿Imports Microsoft.DirectX.Direct3D
Imports Microsoft.DirectX
Public Class AnimationTalon_Gun
    Inherits ObjektAnimation
    Const Loops As Integer = 2
    Dim MomLoops As Integer = 0
    Dim MaskenID As Integer
    Dim Einfahren As Boolean = False
    ''' <summary>
    ''' Fuehrt eine Explosion aus und zerstoert die Einheit
    ''' </summary>
    ''' <param name="X"></param>
    ''' <param name="Y"></param>
    ''' <remarks></remarks>
    Public Sub New(ByVal X As Integer, ByVal Y As Integer, ByVal Musikspielen As Boolean, ByVal Schlacht As Integer)
        MyBase.New(Musikspielen, Schlacht)
        P.X = X
        P.Y = Y
        Frames = 10
        BildID = LoadTextur("Talon Gun+fire", Frames)
        MaskenID = LoadTextur("Talon Gun+fire+Maske", Frames)
        If DataSettings.MusikSound Then
            MusikEngine.LoadWav(DataSettings.Resourcenpfad + "Sound\Sound Effects\Animations\Talon Gun+Out.wav", False)
        End If
    End Sub
    Public Overrides Function Malen(ByVal intColor As Color, Optional ByVal Zoomfaktor As Single = 1, Optional ByVal Feldbreite As Integer = -1) As Boolean
        If DataSettings.draw3D Then

        ElseIf DataSettings._2D_3D_Malen Then
            If Feldbreite <= 0 Then Feldbreite = Hauptmenue.Feldbreite
            Dim T As Textur = Texturen(BildID)
            Dim MittelPunkt As New PointF(T.EinzelbildGroesse.Width / 2, T.EinzelbildGroesse.Height / 2)

            Dim XPlus As Single = -MittelPunkt.X / Feldbreite
            Dim YPlus As Single = -(T.EinzelbildGroesse.Height - MittelPunkt.Y) / Feldbreite

            Dim Rechts As Single = (T.EinzelbildGroesse.Width) / Feldbreite
            Dim Oben As Single = (T.EinzelbildGroesse.Height) / Feldbreite
            Dim cube(3) As CustomVertex.PositionTextured

            If FM = True Then
                Dim FrameSize As Single = 1 / (Frames + 1)
                cube(0) = New CustomVertex.PositionTextured(0, 0, 0, FrameSize * Frame, 1)
                cube(1) = New CustomVertex.PositionTextured(0, 0, Oben * Zoomfaktor, FrameSize * Frame, 0)
                cube(2) = New CustomVertex.PositionTextured(Rechts * Zoomfaktor, 0, 0, FrameSize * Frame + FrameSize, 1)
                cube(3) = New CustomVertex.PositionTextured(Rechts * Zoomfaktor, 0, Oben * Zoomfaktor, FrameSize * Frame + FrameSize, 0)
            Else
                cube(0) = New CustomVertex.PositionTextured(0, 0, 0, 0, 1)
                cube(1) = New CustomVertex.PositionTextured(0, 0, Oben * Zoomfaktor, 0, 0)
                cube(2) = New CustomVertex.PositionTextured(Rechts * Zoomfaktor, 0, 0, 1, 1)
                cube(3) = New CustomVertex.PositionTextured(Rechts * Zoomfaktor, 0, Oben * Zoomfaktor, 1, 0)
            End If


            Dim Vec As Vector3
            Vec = ObjektSpielfeld.CalcDraw2D3DVec(CSng(P.X) + XPlus + 0.5, ObjektSpielfeld.SpielfeldLayer.Animationen, CSng(P.Y) + 13 / 16 - YPlus - 0.5)
            Grafikengine.malen2Din3D(Vec, cube, T.TexturBild, intColor)
            Grafikengine.malen2Din3D(Vec, cube, Texturen(MaskenID).TexturBild, Objektverwalter.Spielfeld.Landschaften(P.X, P.Y, Schlacht).Gebaeude.GetSpieler.Farbe)
        Else
            'Welchen Teil des Bildes wir malen wollen
            Dim sngRotation As Double = 0
            Dim T As Textur = Texturen(BildID)
            If FM = True Then
                With Grafikengine.recBild
                    .X = T.EinzelbildGroesse.Width * Frame : .Width = T.EinzelbildGroesse.Width
                    .Y = 0 : .Height = T.EinzelbildGroesse.Height
                End With
            Else
                With Grafikengine.recBild
                    .X = 0 : .Width = T.EinzelbildGroesse.Width
                    .Y = 0 : .Height = T.EinzelbildGroesse.Height
                End With
            End If
            With Grafikengine.ptfRotCenter
                .X = T.EinzelbildGroesse.Width / 2 * Zoomfaktor
                .Y = T.EinzelbildGroesse.Height / 2 * Zoomfaktor
            End With
            Grafikengine.ptfPosition = New Drawing.Point(Hauptmenue.Feldbreite * P.X + Objektverwalter.Spielfeld.BildschirmKooX, Hauptmenue.Feldbreite * P.Y + Objektverwalter.Spielfeld.BildschirmKooY - 13 / 16 * Hauptmenue.Feldbreite)
            'Ausschnitte in den Backbuffer zeichnen
            'Wo wird das Bild gezeichnet
            '16 ist die Breite eines Feldes 8 die Haelfte das heisst wir ermitteln den Mittelpunkt des Feldes und ziehen die Haelfte der Groesse der Einheit ab
            '... und wie breit ist es
            With Grafikengine.szfScale
                .Height = T.EinzelbildGroesse.Height * Zoomfaktor
                .Width = T.EinzelbildGroesse.Width * Zoomfaktor
            End With
            'jetzt wird es in den Backbuffer gezeichnet 
            Grafikengine.Sprite.Draw2D(T.TexturBild, Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, intColor)
            Grafikengine.Sprite.Draw2D(Texturen(MaskenID).TexturBild, Grafikengine.recBild, Grafikengine.szfScale, Grafikengine.ptfRotCenter, sngRotation, Grafikengine.ptfPosition, Objektverwalter.Spielfeld.Landschaften(P.X, P.Y, Schlacht).Gebaeude.GetSpieler.Farbe)
        End If
        If Einfahren And Frame <= 0 Then
            Return False
        ElseIf Frame >= Frames Then
            Einfahren = True
            Frame = 6
            If DataSettings.MusikSound Then
                MusikEngine.LoadWav(DataSettings.Resourcenpfad + "Sound\Sound Effects\Animations\Talon Gun+In.wav", False)
            End If
        End If



        Count = 1
        If Count = 0 Then
            If Einfahren Then
                Frame -= 1
            Else
                Frame += 1
            End If

        End If

        If Frame = 7 Then
            If DataSettings.MusikSound Then
                MusikEngine.LoadWav(DataSettings.Resourcenpfad + "Sound\Sound Effects\Animations\Talon Gun+Spin.wav", False)
            End If
        End If

        If Frame >= Frames Then
            If MomLoops < Loops Then
                Frame = 7
                MomLoops += 1
            Else
                Frame = Frames
            End If
        End If
        Return True
    End Function
End Class
